<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8">
    <link href="../../style.css" rel="stylesheet" type="text/css">
    <link rel="icon" href="../../images/PETSc_RGB-logo.png" type="image/png" sizes="16x16">
    <title>PETSc: Documentation: Changes: 3.6</title>
  </head>
  <body>

    <div id="logo">
      <h1>PETSc</h1>
    </div>

    <div id="header">
      <h1><!--begin-->Documentation: Changes: 3.6<!--end--></h1>
    </div>

    <hr>

    <div id="sidebar">
      <ul>
        <li><a href="../../index.html">Home</a></li>
        <li><a href="../../download/index.html">Download</a></li>
        <li><a href="../../features/index.html">Features</a></li>
        <li>
          <a href="../../documentation/index.html">Documentation</a>
          <ul>
            <li><a href="../index.html">Manual pages and Users Manual</a></li>
            <li><a href="../referencing.html">Citing PETSc</a></li>
            <li><a href="../tutorials/index.html">Tutorials</a></li>
            <li><a href="../installation.html">Installation</a></li>
            <li><a href="../saws.html">SAWs</a></li>
            <li>
              <a href="index.html">Changes</a>
              <ul>
                <li><a href="dev.html">dev</a></li>
                <li><a href="313.html">3.13</a></li>
                <li><a href="312.html">3.12</a></li>
                <li><a href="311.html">3.11</a></li>
                <li><a href="310.html">3.10</a></li>
                <li><a href="39.html">3.9</a></li>
                <li><a href="38.html">3.8</a></li>
                <li><a href="37.html">3.7</a></li>
                <li><span class="current">3.6</span></li>
                <li><a href="35.html">3.5</a></li>
                <li><a href="34.html">3.4</a></li>
                <li><a href="33.html">3.3</a></li>
                <li><a href="32.html">3.2</a></li>
                <li><a href="31.html">3.1</a></li>
                <li><a href="300.html">3.0.0</a></li>
                <li><a href="233.html">2.3.3</a></li>
                <li><a href="232.html">2.3.2</a></li>
                <li><a href="231.html">2.3.1</a></li>
                <li><a href="230.html">2.3.0</a></li>
                <li><a href="221.html">2.2.1</a></li>
                <li><a href="220.html">2.2.0</a></li>
                <li><a href="216.html">2.1.6</a></li>
                <li><a href="215.html">2.1.5</a></li>
                <li><a href="213.html">2.1.3</a></li>
                <li><a href="212.html">2.1.2</a></li>
                <li><a href="211.html">2.1.1</a></li>
                <li><a href="21.html">2.1.0</a></li>
                <li><a href="2029.html">2.0.29</a></li>
                <li><a href="2028.html">2.0.28</a></li>
                <li><a href="2024.html">2.0.24</a></li>
                <li><a href="2022.html">2.0.22</a></li>
                <li><a href="2018-21.html">2.0.18-21</a></li>
                <li><a href="2017.html">2.0.17</a></li>
                <li><a href="2016.html">2.0.16</a></li>
                <li><a href="2015.html">2.0.15</a></li>
              </ul>
            </li>
            <li><a href="../bugreporting.html">Bug Reporting</a></li>
            <li><a href="../codemanagement.html">Code Management</a></li>
            <li><a href="../faq.html">FAQ</a></li>
            <li><a href="../license.html">License</a></li>
            <li><a href="../linearsolvertable.html">Linear Solver Table</a></li>
            <li><a href="../nonlinearsolvertable.html">Nonlinear Solver Table</a></li>
	    <li><a href="../taosolvertable.html">TAO Solver Table</a></li>
          </ul>
        </li>
        <li><a href="../../publications/index.html">Applications/Publications</a></li>
        <li><a href="../../miscellaneous/index.html">Miscellaneous</a></li>
        <li><a href="../../miscellaneous/external.html">External Software</a></li>
        <li><a href="https://docs.petsc.org/en/latest/developers/index.html">Developers Site</a></li>
      </ul>
    </div>

    <!--begin-->

    <style type="text/css">
      h2 {
        color: red;
      }

      h4 {
        font-weight: bold;
        text-decoration: underline;
      }
    </style>

    <div id="main">

      <div align="center">
        <h2><a name="CHANGES">CHANGES in the PETSc 3.6 Version</a></h2>
      </div>

      <h4>General:</h4>
      <ul>
        <li>  User makefiles must be updated. You must change the lines
          <ul>
             <li> include  ${PETSC_DIR}/conf/variables and </li>
             <li> include ${PETSC_DIR}/conf/rules </li>
          </ul>
          to
          <ul>
            <li>include  ${PETSC_DIR}/lib/petsc/conf/variables and</li>
            <li>include ${PETSC_DIR}/lib/petsc/conf/rules</li></li>
          </ul>
        <li>  PetscOptionsBool() no longer sets the value of the boolean based on the value passed in</li>
        <li>  Script for running MPIUni jobs is now bin/petsc-mpiexec.uni </li>
        <li>  Removed all threadcomm support including --with-pthreadclasses and --with-openmpclasses configure arguments </li>
        <li>  Updated MUMPS version to 5.0.0 - and updated metis to 5.1.0,  parmetis to 4.0.3-p1 - in sync with MUMPS.</li>
        <li>  Updated to hypre-2.10.0b, scotch_6.0.3, Elemental-0.85</li>
      </ul>
      <h4>Configure/Build:</h4>
      <ul>
        <li>Add toplevel makefile targets <em>clean</em> and <em>distclean</em>. Target <em>clean</em>
          deletes petsc libraries built by makefile target <em>all</em>. Target <em>distclean</em> deletes
          all build files created by <em>configure</em> and [<em>make all</em>]. Target <em>clean</em> in
          example directories continues to work as before [deletes object files and executables]</li>
      </ul>
      <h4>IS:</h4>
      <h4>PetscDraw:</h4>
      <ul>
        <li>PetscDrawBoxedString() changed to PetscDrawStringBoxed()
          added PetscDrawBar object for drawing bar graphs
          added PetscDrawStringCentered()</li>
      </ul>
      <h4>PF:</h4>
      <h4>Vec:</h4>
      <h4>VecScatter:</h4>
      <h4>PetscSection:</h4>
      <h4>Mat:</h4>
      <ul>
         <li>MatGetVecs() replaced with MatCreateVecs() because it actually does create the Vecs that need to be destroyed</li>
         <li>MatCreateMPIAIJConcatenateSeqAIJ and MatCreateMPIBAIJConcatenateSeqBAIJ replaced with MatCreateMPIMatConcatenateSeqMat</li>
         <li>MatGetRedundantMatrix() replaced with MatCreateRedundantMatrix()</li>
         <li>Added support for MUMPS sequential solver in Schur complement mode</li>
         <li>MatGetSubMatricesMPI() will extract parallel submatrices on subcommunicators of the supplied IS objects. Unsorted, but not repeated indices are okay.</li>
         <li>Removed MatMFFDAddNullSpace() just use MatSetNullSpace()</li>
      </ul>
      <h4>PC:</h4>
      <ul>
         <li>Removed -pc_hypre_type euclid due to bit-rot</li>
         <li>Upgraded to SuiteSparse 4.4.1; Cholmod supports using GPUs (developer repository only feature) --with-cuda --download-suitesparse-gpu --with-64-bit-indices; -mat_cholmod_useGPU 1 or 0; 1 by default when configured for it</li>
         <li>Upgraded to Superlu_DIST 4.0; Superlu_DIST supports using GPUs (developer repository only feature) --with-cuda --with-openmp --download-superlu_dist-gpu (developer repository only feature) --with-64-bit-indices -mat_cholmod_useGPU 1 or 0; 1 by default when configured for it</li>
         <li>Added PCBDDCSetChangeOfBasisMat for user defined change of basis</li>
         <li>PCBDDC: added adaptive selection of constraints: it is available by command line options</li>
         <li>PCJacobiSetUseAbs() now takes a PetscBool argument allowing toggling the option</li>
         <li>PCJacobiSetUseRowMax() and PCJacobiSetUseRowSum() have been merged into PCJacobiSetType()</li>
         <li>PCFactorSetUseInplace() now takes a PetscBool argument. Added PCFactorGetUseInplace()</li>
         <li>PCFactorSetAllowDiagonalFill() now takes a PetscBool argument. Added PCFactorGetAllowDiagonalFill()</li>
         <li>PCEisenstatNoDiagonalScaling() changed to PCEisenstatSetNoDiagonalScaling() and takes a boolean</li>
         <li>Added Interface to AMS solver from HYPRE for Nedelec discretizations (-pc_hypre_type ams)</li>
         <li>Added Interface to ADS solver from HYPRE for Raviart-Thomas discretizations (-pc_hypre_type ads)</li>
         <li>Contributed  MKL Pardiso interface providing PCCholesky support. Useable with: -pc_type cholesky -mat_type sbaij -pc_factor_mat_solver_package mkl_pardiso</li>
         <li>PCGASMSetTotalSubdomains() can now create multirank subdomains if their number is less than comm size.</li>
         <li>PCGAMGSetReuseProl() is changed to PCGAMGSetReuseInterpolation()</li>
      </ul>
      <h4>KSP:</h4>
      <ul>
        <li>Removed KSPSetNullSpace() always use MatSetNullSpace() provided to the FIRST matrix argument to KSPSetOperators(), or SNESSetJacobian(), or TSSetIJacobian()</li>
        <li>Added MatSetTransposeNullSpace() to indicate the null space of the transpose operator</li>
        <li>Removed KSPSPECEST since its functionality is replaced by the esteig functionality within KSPChebyshev</li>
        <li>Unified KSPChebyshev routines that work with estimating eigenvalues with the prefix name KSPChebyshevEstEig... For example KSPChebyshevSetEstimateEigenvalues() is now KSPChebyshevEstEigSet() and KSPChebyshevSetEstimateEigenvaluesRandom() is now KSPChebyshevEstEigSetRandom() similarly -ksp_chebyshev_estimate_eigenvalues_random is -ksp_chebyshev_esteig_random. The previous for the (GMRES) KSP used to estimate the eigenvalues is now esteig_ not est_</li>
        <li>KSPGetVecs() replaced with KSPCreateVecs() because it actually does create the Vecs that need to be destroyed</li>
      </ul>
      <h4>SNES:</h4>
      <ul>
        <li>Added KSPMonitorSNES() with command line option -ksp_monitor_snes and -ksp_monitor_snes_lg to monitor SNES residual norm at each linear iteration
      SNESMonitorVI() becomes SNESVIMonitor()</li>
        <li>Added SNESVIMonitorResidual() and -snes_vi_monitor_residual</li>
      </ul>
      <h4>SNESLineSearch:</h4>
      <h4>TS:</h4>
      <ul>
	<li>The postevent routine set with TSSetEventMonitor() now takes an additional PetscBool argument 'forwardsolve'. The forwardsolve flag is used to distinguish between a TS forward solve (forwardsolve = 1) and adjoint solve (forwardsolve = 0).</li>
        <li>Added TSAdjointSolve() for adjoint sensitivity analysis</li>
        <li>EquationType is introduced to distinguish between ODEs and DAEs. It needs to be set accordingly before solving the problem through TSSetEquationType(). It currently only affects arkimex methods. </li>
      </ul>
      <h4>DM/DA:</h4>
      <ul>
        <li>DMCreateInjection() now returns a Mat, rather than a VecScatter</li>
        <li>The MatType argument is removed from DMCreateMatrix(), you can use DMSetMatType() to indicate the type you want used with a DM, defaults to MATAIJ</li>
        <li>You can now use DMDASetAOType() to indicate the type of AO you want used with a DMDA (defaults to AOBASIC)</li>
      </ul>
      </ul>
      <h4>DMPlex:</h4>
      <ul>
        <li>Can now redistribute parallel meshes</li>
        <li>Can now increase the overlap of parallel meshes</li>
        <li>Added new mesh formats, Fluent CAS and Gmsh</li>
      </ul>
      <h4>PetscViewer:</h4>
      <ul>
        <li>HDF5 viewer will save Vecs and DMDA Vecs with a dimension of 1 if the bs/dof of the vector is 1. To always include this dimension as a specific dimension
      in the HDF5 file even if if it is of size 1 use PetscViewerHDF5SetBaseDimension2() or -viewer_hdf5_base_dimension2 true</li>
      </ul>
      <h4>SYS:</h4>
      <ul>
        <li>PetscOptionsHead() now takes a PetscOptions argument.</li>
        <li>PetscObjectAddOptionsHandler() now takes an event handler that includes a PetscOptions argument.  PetscObjectProcessOptionsHandlers() requires this as input.</li>
      </ul>
      <h4>AO:</h4>
      <h4>Fortran:</h4>
     <ul>
        <li>Fortran include files are now in include/petsc/finclude instead of include/finclude. Thus replace uses of #include "finclude/xxx.h" with #include "petsc/finclude/xxx.h". Reason for change: to namespace the finclude directory with PETSc for --prefix installs of PETSc and for packaging systems</li>
      </ul>
    </div>

    <!--end-->

    <hr>

  </body>
</html>
